home *** CD-ROM | disk | FTP | other *** search
Modula Definition | 1986-01-21 | 3.0 KB | 73 lines |
- DEFINITION MODULE SyntaxAnalyzer;
- (* Analyzes the operands to provide information for CodeGenerator *)
-
- FROM LongNumbers IMPORT
- LONG;
-
- FROM Parser IMPORT
- OPERAND;
-
-
- EXPORT QUALIFIED
- SizeType, OpConfig, OpMode, Xtype, (* TYPEs *)
- GetValue, GetSize, (* PROCEDURE's *)
- GetInstModeSize, GetOperand, GetMultReg; (* PROCEDURE's *)
-
-
- TYPE
- OpMode = (DReg, (* Data Register *)
- ARDir, (* Address Register Direct *)
- ARInd, (* Address Register Indirect *)
- ARPost, (* Address Register with Post-Increment *)
- ARPre, (* Address Register with Pre-Decrement *)
- ARDisp, (* Address Register with Displacement *)
- ARDisX, (* Address Register with Disp. & Index *)
- AbsW, (* Absolute Word (16-bit Address) *)
- AbsL, (* Absolute Word (32-bit Address) *)
- PCDisp, (* Program Counter Relative, with Displacement *)
- PCDisX, (* Program Counter Relative, with Disp. & Index *)
- Imm, (* Immediate *)
- MultiM, (* Multiple Register Move *)
- SR, (* Status Register *)
- CCR, (* Condition Code Register *)
- USP, (* User's Stack Pointer *)
- Null); (* Error Condition, or Operand missing *)
-
- Xtype = (X0, Dreg, Areg);
- SizeType = (S0, Byte, Word, S3, Long);
-
- OpConfig = RECORD (* OPERAND CONFIGURATION *)
- Mode : OpMode;
- Value : LONG;
- Loc : CARDINAL; (* Location of Operand on line *)
- Rn : CARDINAL; (* Register number *)
- Xn : CARDINAL; (* Index Reg. nbr. *)
- Xsize : SizeType; (* size of Index *)
- X : Xtype; (* Is index Data or Address register? *)
- END;
-
-
-
- PROCEDURE GetValue (Operand : OPERAND; VAR Value : LONG);
- (* determines value of operand (in Decimal, HEX, or via Symbol Table) *)
-
-
- PROCEDURE GetSize (VAR Symbol : ARRAY OF CHAR; VAR Size : SizeType);
- (* determines size of opcode: Byte, Word, or Long *)
-
- PROCEDURE GetAbsSize (VAR Symbol : ARRAY OF CHAR; VAR AbsSize : SizeType);
- (* determines size of operand: Word or Long *)
-
- PROCEDURE GetInstModeSize (Mode : OpMode; Size : SizeType;
- VAR InstSize : CARDINAL) : CARDINAL;
- (* Determines the size for the various instruction modes. *)
-
- PROCEDURE GetOperand (Oper : OPERAND; VAR Op : OpConfig);
- (* Finds mode and value for source or destination operand *)
-
- PROCEDURE GetMultReg (Oper : OPERAND; PreDec : BOOLEAN;
- Loc : CARDINAL; VAR MultExt : BITSET);
- (* Builds a BITSET marking each register used in a MOVEM instruction *)
-
- END SyntaxAnalyzer.